#include <iostream>
#include <vector>
using namespace std;
//给定N个自然数,值域是[0,10^9]，求出这n个自然数中有多少个不同的自然数。
#define mod 233333                  //取模数
int number, domain, t, remnant = 0; //数字，范围，临时变量，不重复数字个数

vector<int> linker[mod]; // mod指的是这个容器的最大容量，一个数对mod取模，范围在0-mod-1之间。
// Q1：题解中为linke[mod+2]，为什么要加2。
inline void insert(int number)
{
    for (int i = 0; i < linker[number % mod].size(); i++)
    {
        if (linker[number % mod][i] == number)
        {
            return;
        }
    }
    linker[number % mod].push_back(number); // push_back 为在数组的最后添加一个数据,那这个linker[number%mod]只是一个向量元素吧，它后面为什么能添加数据？
    remnant++;
    //如果a[x]=0,说明a[x]没统计过，将a[x]赋值为1.如果a[x]=1,就说明x曾经出现过。
    return;
}
int main()
{
    cin >> domain;
    for (int i = 0; i < domain; i++)
    {
        cin >> number;
        insert(number);
    }
    cout << remnant << endl;
    return 0;
}